package simple

// https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
// 删除已排序数组中的重复元素
// 算法: 直接往后遍历即可，将中间重复的元素直接排除掉即可
// 时间复杂度: O(n^2), 因为连续数组的重组本身也要时间成本
// 更高效的方法: 直接拷贝元素即可，不用重组整个数组
func RemoveDuplicates(nums []int) int {
	index := 0
	for index < len(nums) {
		toRemovedIndex := -1
		nextStep := 1
		for index+nextStep < len(nums) && nums[index+nextStep] == nums[index] {
			toRemovedIndex = index + nextStep
			nextStep++
		}
		if -1 != toRemovedIndex {
			nums = append(nums[:index+1], nums[toRemovedIndex+1:]...)
		}
		index++
	}
	return len(nums)
}
